package com.itheima.controller;

import com.itheima.pojo.Emp;
import com.itheima.pojo.EmpQueryParam;
import com.itheima.pojo.PageResult;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;

@Slf4j
@RequestMapping("/emps")
@RestController
public class EmpController {

    @Autowired
    private EmpService empService;

   /**
     *
     * @param empQueryParam
     * @return
     */
    @GetMapping
    public Result page(EmpQueryParam empQueryParam) {   // 表单
        log.info("查询请求参数： {}", empQueryParam);
        PageResult pageResult = empService.page(empQueryParam);
        return Result.success(pageResult);
    }

    /**
     *
     * @param emp
     * @return
     */
    @PostMapping
    public Result save(@RequestBody Emp emp){  // 请求体中的JSON数据
        log.info("请求参数：{}" ,emp);
        empService.save(emp);
        return Result.success();
    }

    /**
     * 批量删除员工基本信息以及员工经历
     * 请求路径后面跟 ?参数名=value1,value2... 这样的用@RequestParam这个注解接收
     * @param ids
     * @return
     */
    @DeleteMapping
    public Result delete(@RequestParam List< Integer> ids){
        log.info("批量删除员工信息：{}", ids);
        empService.deleteByIds(ids);
        return Result.success();
    }


    @GetMapping("/{id}")
    public Result getInfo(@PathVariable Integer id){
        Emp emp = empService.getById(id);
        return Result.success(emp);
    }

    @PutMapping
    public Result update(@RequestBody Emp emp){
        log.info("更新员工信息：{}", emp);
        empService.updateById(emp);
        return Result.success();
    }


    @GetMapping("/list")
    public Result list(){
        log.info("查询所有员工信息");
        List<Emp> list = empService.findAll();
        return Result.success(list);
    }



//    /**
//     * 分页查询
//     *
//     * @param page     当前页码
//     * @param pageSize 每页显示条数
//     * @return 封装查询结果
//     * @version 1.0 此时无默认值，即不发送请求参数默认显示第一页的十条数据
//     * 解决办法：使用@RequestParam注解，并设置默认值
//     */
//    @GetMapping
//    public Result page(@RequestParam(defaultValue = "1") Integer page,
//                       @RequestParam(defaultValue = "10") Integer pageSize) {
//        log.info("分页查询,参数:{},{}", page, pageSize);
//        PageResult pageResult = empService.page(page, pageSize); // 将查询结果封装为PageResult对象
//        return Result.success(pageResult);
//
//    }
    /**
     * 分页查询
     *
     * @param page     当前页码
     * @param pageSize 每页显示条数
     * @return 封装查询结果
     * @version 1.1 添加条件分页查询功能，查看接口文档，并添加请求参数   page, pageSize, name, gender, begin, end
     * @DateTimeFormat(pattern = "yyyy-MM-dd") 定义时间格式，否则报错
     */
//    @GetMapping
//    public Result page(@RequestParam(defaultValue = "1") Integer page,
//                       @RequestParam(defaultValue = "10") Integer pageSize,
//                       String name, Integer gender,
//                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
//                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
//        log.info("分页查询,参数:{},{},{},{},{},{}", page, pageSize, name, gender, begin, end);
//        PageResult pageResult = empService.page(page, pageSize, name, gender, begin, end); // 将查询结果封装为PageResult对象
//        return Result.success(pageResult);
//
//    }


}
